#ifndef OBJECTIVE_FUNCTION_HPP
#define OBJECTIVE_FUNCTION_HPP

class objective_function_i
{
protected:
        objective_function_i ( void )
        {
        }

public:
        virtual ~objective_function_i ( void )
        {
        }

        virtual double evaluate ( void ) const = 0;
};

class rigidity_objective_function_c : public objective_function_i
{
        bool    cache_is_out_of_date;
        double  cached_value;
        double  rigidity;

public:
        virtual ~rigidity_objective_function_c ( void )
        {
        }

        rigidity_objective_function_c ( void )
        {

        }
};

#endif
